         /** 
          Definition for singly-linked list. 
           struct ListNode 
           { 
            int val; 
             struct ListNode next; 
         }; 
         */ 
         typedef struct ListNode ln; 
         struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) 
         { 
            //处理两个原链表有为空链表的情况 
            if(list1==NULL) 
            { 
                return list2; 
            } 
            if(list2==NULL) 
            { 
                return list1;
            } 
            //创建新链表 
            ln*newHead,*newTail; 
            newHead=newTail=(ln*)malloc(sizeof(ln)); 
            //创建两个指针，分别指向两个链表头结点 
            ln* n1=list1; 
            ln* n2=list2; 
            while(n1 && n2) 
            { 
                if(n1->val<n2->val) 
                { 
                    newTail->next=n1; 
                    newTail=newTail->next; 
                    n1=n1->next; 
                } 
                else 
                { 
                    newTail->next=n2; 
                    newTail=newTail->next; 
                    n2=n2->next; 
                } 
            } 
            //跳出循环，要么n1为空，要么n2为空 
            if(n1)//n2为空 
            { 
                newTail->next=n1; 
            } 
            if(n2) 
            { 
                newTail->next=n2; 
            } 
            ln* ret=newHead->next; 
            free(newHead);
            newHead=NULL;
            return ret; 
    }